Custom Controller এবং Controller Extension Salesforce-এ Visualforce পেজের সাথে Apex ক্লাসের মাধ্যমে কাস্টম লজিক এবং ডেটা প্রসেসিং সংযুক্ত করার দুটি পদ্ধতি। Custom Controller ব্যবহার করে সম্পূর্ণ নতুন Controller তৈরি করা হয়, যেখানে Controller Extension-এর মাধ্যমে একটি স্ট্যান্ডার্ড বা Custom Controller-এ নতুন কার্যক্ষমতা যোগ করা যায়। এই দুটি পদ্ধতির মাধ্যমে Apex কোডের জটিল লজিক Visualforce পেজে প্রয়োগ করা সহজ হয়।
Custom Controller হলো এমন একটি Apex ক্লাস, যা Visualforce পেজের জন্য কাস্টম লজিক প্রদান করে। Custom Controller সাধারণত যখন স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়, বরং এককভাবে কাস্টম লজিক প্রয়োগ করতে হয়, তখন ব্যবহার করা হয়।
Apex Class (Custom Controller)
public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
public void updateIndustry() {
acc.Industry = 'Technology';
update acc;
}
}
Visualforce Page
<apex:page controller="AccountController">
<h1>Account Details</h1>
<p>Account Name: {!acc.Name}</p>
<p>Industry: {!acc.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
AccountController
Apex ক্লাস ব্যবহৃত হয়েছে।Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড Technology
হিসেবে আপডেট হবে এবং Visualforce পেজে তা দেখাবে।Controller Extension হলো একটি Apex ক্লাস, যা একটি স্ট্যান্ডার্ড বা Custom Controller-এর সাথে যুক্ত করা হয় এবং অতিরিক্ত কার্যক্ষমতা প্রদান করে। এটি মূল Controller-এর কার্যক্ষমতা পরিবর্তন না করে নতুন লজিক যোগ করার জন্য ব্যবহৃত হয়।
Apex Class (Controller Extension)
public class AccountControllerExtension {
private final Account acc;
public AccountControllerExtension(ApexPages.StandardController controller) {
this.acc = (Account)controller.getRecord();
}
public void updateIndustry() {
acc.Industry = 'Healthcare';
update acc;
}
}
Visualforce Page
<apex:page standardController="Account" extensions="AccountControllerExtension">
<h1>Account Details</h1>
<p>Account Name: {!Account.Name}</p>
<p>Industry: {!Account.Industry}</p>
<apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
AccountControllerExtension
Apex ক্লাস যুক্ত করা হয়েছে।Update Industry
বাটন ক্লিক করলে Industry
ফিল্ড Healthcare
হিসেবে আপডেট হবে।বৈশিষ্ট্য | Custom Controller | Controller Extension |
---|---|---|
প্রধান উদ্দেশ্য | সম্পূর্ণ নতুন Controller তৈরি করা | বিদ্যমান Controller-এর কার্যক্ষমতা বৃদ্ধি |
স্ট্যান্ডার্ড কন্ট্রোলার | ব্যবহৃত হয় না | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের সাথে যুক্ত |
ডেটা প্রসেসিং | সম্পূর্ণ নতুন ডেটা প্রসেসিং যুক্ত করা হয় | মূল Controller-এর ডেটা প্রসেসিং বাড়ানো |
লজিক সংযোজন | স্বতন্ত্র কাস্টম লজিক | স্ট্যান্ডার্ড বা কাস্টম লজিকের উপর ভিত্তি করে |
ব্যবহার ক্ষেত্র | স্বাধীনভাবে কাজ করতে ব্যবহৃত | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের ফিচার বৃদ্ধি |
try-catch
ব্লক ব্যবহার করুন।public class AccountController {
public Account acc { get; set; }
public AccountController() {
acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
}
public void updateIndustry() {
acc.Industry = 'Technology';
update acc;
}
}
public class AccountControllerExtension {
private final Account acc;
public AccountControllerExtension(ApexPages.StandardController controller) {
this.acc = (Account)controller.getRecord();
}
public void updateIndustry() {
acc.Industry = 'Healthcare';
update acc;
}
}
@isTest
public class AccountControllerTest {
@isTest
static void testCustomController() {
Account acc = new Account(Name = 'Test Account');
insert acc;
AccountController controller = new AccountController();
controller.updateIndustry();
Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
System.assertEquals('Technology', updatedAcc.Industry);
}
@isTest
static void testControllerExtension() {
Account acc = new Account(Name = 'Test Account');
insert acc;
ApexPages.StandardController stdController = new ApexPages.StandardController(acc);
AccountControllerExtension extension = new AccountControllerExtension(stdController);
extension.updateIndustry();
Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
System.assertEquals('Healthcare', updatedAcc.Industry);
}
}
updateIndustry()
মেথড সঠিকভাবে কাজ করছে কি না যাচাই করা হয়েছে।Custom Controller এবং Controller Extension Visualforce পেজের জন্য Apex লজিক সংযুক্ত করার দুটি পদ্ধতি। Custom Controller সম্পূর্ণ নতুন লজিক প্রদান করে, যেখানে Controller Extension মূল Controller-এর কার্যক্ষমতা বাড়ায়। টেস্ট ক্লাস ও সঠিক অপ্টিমাইজেশন নিশ্চিত করে এই দুটি পদ্ধতির মাধ্যমে Salesforce-এ কার্যকরী ও উন্নত ইউজার ইন্টারফেস তৈরি করা যায়।
common.read_more